//
//  HomeTableViewController.swift
//  WeChat
//
//  Created by 梁迪 on 15/12/12.
//  Copyright © 2015年 梁迪. All rights reserved.
//

import UIKit
import AFNetworking
import SVProgressHUD

class HomeTableViewController: BaseTableViewController {
    private let HomeCellID = "HomeCellID"
    
private lazy var statuses = [Status]()
    
    
    
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        if !userLogin{
            
            visitorLoginView?.setupInfo("登录后，别人评论你的微博，发给你的消息，都会在这里收到通知", imageName: nil)
            return
        }
        
        prepareTableView()
        
        loadData()
        
        
        
    }
    
    override func viewDidAppear(animated: Bool) {
        super.viewDidAppear(animated)
        loadData()
    }
    
    private func prepareTableView(){
        tableView.registerClass(StatusCell.self, forCellReuseIdentifier: HomeCellID)
//        tableView.rowHeight = 200
        
        tableView.estimatedRowHeight = 300
        tableView.rowHeight = UITableViewAutomaticDimension
        
        tableView.separatorStyle = .None
        
        //设置系统的下拉刷新
//        refreshControl = UIRefreshControl()
//        refreshControl?.addTarget(self, action: "loadData", forControlEvents: .ValueChanged)
        //添加自定义下拉刷新控件
        tableView.addSubview(refreshView)
        refreshView.addTarget(self, action: "loadData", forControlEvents: .ValueChanged)
        
        tableView.tableFooterView = indicatorView
        
    }
    
   @objc private func loadData(){
    
    var since_id:Int64 = 0
    var max_id:Int64 = 0
    if indicatorView.isAnimating(){
        max_id = statuses.last?.id ?? 0
        
        
    }else {
        
        since_id = statuses.first?.id ?? 0
    }
        
    StatusListViewModel.loadHomePageData(since_id,max_id:max_id) { (statuses) -> () in
        
        
        self.refreshView.endRefreshing()
//        self.refreshControl?.endRefreshing()
            guard let list = statuses else{
                
                return
            }
            
        if since_id > 0 {
            self.statuses = list + self.statuses
            
        }else if max_id > 0 {
            self.statuses += list
            self.indicatorView.stopAnimating()
        }else {
            
            self.statuses = list
            
        }
        
        
        
        
        
        
        
        
        
            self.tableView.reloadData()
            
        }
        
        
        
        
    }
    
    
    private lazy var indicatorView:UIActivityIndicatorView = {
        let i = UIActivityIndicatorView(activityIndicatorStyle:.Gray)
        
        return i
    }()
    
    
    
}

//        let AFN = AFHTTPSessionManager()
        
//        let urlString = "2/statuses/home_timeline.json"
//        //判断 token 是否为空
//        guard let token = UserAccountViewModel().token else{
//            
//            SVProgressHUD.showInfoWithStatus("请重新登录")
//            
//            return
//        }
//        
//        let parameters = ["access_token":token]
//        
//        
//        NetworkTools.sharedTools.requestJSONDict(.GET, urlString: urlString, parameters: parameters) { (dict, error) -> () in
//            
//            if error != nil{
//                
//                SVProgressHUD.showInfoWithStatus("您的网络出错,请稍后再试")
//                return
//            }
//            
//            
//            if let array = dict!["statuses"] as? [[String:AnyObject]]{
//                //                    print("11111111111111111")
//                //                    print(array)
//                                    var list = [Status]()
//                                    for item in array{
//                
//                                      let s = Status(dict: item)
//                                       list.append(s)
//                
//                                    }
//                                    
//                                    self.statuses = list
//                                    self.tableView.reloadData()
//            
//            
//            }
//            
//        }
//            
//        }
//        
//    }

        
        
//        AFN.GET(urlString, parameters: parameters, progress: { (p) -> Void in
//            
//            }, success: { (task, result) -> Void in
//                
//                print("____________\(result)")
//                
//                guard let dict = result as? [String : AnyObject] else{
//                    
//                    print("数据不合法")
//                    SVProgressHUD.showInfoWithStatus("您的网络出错,请稍后再试")
//                    return
//                    
//                }
//                
//                if let array = dict["statuses"] as? [[String:AnyObject]]{
////                    print("11111111111111111")
////                    print(array)
//                    var list = [Status]()
//                    for item in array{
//                        
//                      let s = Status(dict: item)
//                       list.append(s)
//                        
//                    }
//                    
//                    self.statuses = list
//                    self.tableView.reloadData()
//                    
//                }
//                
//                
//                
//                
//                
//                
//                
//                
//                
//                
//                
//                
//                
//                
//                
//            }) { (task, error) -> Void in
//                
//                print(error)
//                
//        }
        
        
        
        
        
        
        


extension HomeTableViewController{
    override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
        return 1
    }


    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return statuses.count
    }
    
    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        
        let cell = tableView.dequeueReusableCellWithIdentifier(HomeCellID, forIndexPath: indexPath) as! StatusCell
        cell.status = statuses[indexPath.row]
        
        if !indicatorView.isAnimating() && indexPath.row == statuses.count - 1 {
            
            indicatorView.startAnimating()
            loadData()
            
        }
        
        
//        cell.textLabel?.text = statuses[indexPath.row].user?.name
//        print(statuses[indexPath.row].imageURLs!.count)
//        print(statuses[indexPath.row].retweeted_status?.text)
        return cell
        
        
        
        
}
}